package com.by;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;


public class Publisher {
    public static void main(String[] args) throws IOException, TimeoutException {

        //1. 创建连接 实例化连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //设置服务器地址
        factory.setHost("192.168.131.128");
        //设置账号 密码
        factory.setUsername("admin");
        factory.setPassword("123456");
        //设计端口号
        factory.setPort(5672);

        //设计虚拟主机
        factory.setVirtualHost("/");

        //2创建链接
        Connection conn = factory.newConnection();

        //3.创建信道
        Channel channel = conn.createChannel();


        //4声明交换器
        String exname = "pubsub";//交换机名称
        channel.exchangeDeclare(exname, BuiltinExchangeType.FANOUT); //指定交换机为发布订阅




        //5声明队列
        /**
         * queue  队列的名称
         * durable  队列是否持久 化   true持久化 false非
         * exclusive 是否独占连接
         * autoDelete 是否自动删除  长时间不再使用的队列
         * arguments 附加参数
         */
        String queueName = "work",queue2 ="lijianfang",queue3 ="lijianfang2";
        channel.queueDeclare(queueName, true, false, false, null);
        channel.queueDeclare(queue2, true, false, false, null);
        channel.queueDeclare(queue3, true, false, false, null);


        //绑定
        channel.queueBind(queueName, exname, "");
        channel.queueBind(queue2, exname, "");
        channel.queueBind(queue3, exname, "");


        //6.发送消息
        /**
         * exchange  交换器  在简单队列 模式中 没有  设置为空
         * routingKey  路由键  用于说明消息投递到哪个队列上   这里指定队列名称
         * props  消息的其它属性，如路由头
         * body 要发送的消息内容
         */
      //  channel.basicPublish("",queueName,null,"hello aaaaaaaa!".getBytes());

        //定义一组消息
//        String []msgs={"...","..............................","...........",".....","......................","....."};
//        for(String msg:msgs){
//            channel.basicPublish("", queueName, MessageProperties.PERSISTENT_TEXT_PLAIN,msg.getBytes());
//        }

        channel.basicPublish(exname, "", MessageProperties.PERSISTENT_TEXT_PLAIN,"用户下单成功，订单id=1".getBytes());



        System.out.println("----消息已发送！");


        //关闭连接  释放资源
        channel.close();
        conn.close();








    }
}
